#ifndef DISTINCT_EXCLUDED_BLOCKS_H
#define DISTINCT_EXCLUDED_BLOCKS_H

#include "reporting.h"
#include <stdint.h>
#include <vector>
#include <set>

class distinct_excluded_blocks : public reportable
{
    public:
        /** Default constructor */
        distinct_excluded_blocks();
        /** Default destructor */
        virtual ~distinct_excluded_blocks();
        void set_max_length(std::string::size_type);
        void add_with_right_checking(const std::string &, std::string::size_type);
        void add_with_left_checking(const std::string &, std::string::size_type);
        std::ostream& report(std::ostream&);
    private:
    //std::map<uint64_t, std::string::size_type> deb_to_length;
    std::vector< std::set<uint64_t> > bins;
};

#endif // DISTINCT_EXCLUDED_BLOCKS_H
